package com.young.shop.api.dao;

import com.young.shop.api.base.BaseMapper;
import com.young.shop.pojo.entity.Address;
import com.young.shop.pojo.entity.User;
import com.young.shop.pojo.qo.ViewsQO;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @author 曾家乐
 * @version 1.0
 * @date 2021-01-08 15:43
 */
@ResponseBody
public interface UserMapper extends BaseMapper<User,Integer> {

    /**
     * 通过用户名查询用户记录
     * @param userName
     * @return  用户对象
     */
    User selectByUserName(String userName);

    /**
     * 通过email查询到用户记录
     * @param email
     * @return
     */
    User selectByEmail(String email);

    /**
     * 通过id查询到用户信息
     * @param id
     * @return
     */
    User selectById(long id);

    /**
     *通过对象查询用户记录
     * @param user
     * @return
     */
    User selectByUser(User user);

    /**
     * 新增一条用户信息
     * @param user 用户对象
     * @return
     */
    int insertUser(User user);

    /**
     * 根据id修改密码
     * @param user
     * @return
     */
    int updatePassword(User user);

    /**
     * 插入一条地址信息
     * @param address
     * @return
     */
    int insertAddress(Address address);

    /**
     * 根据用户id查询到地址信息列表
     * @param userId
     * @return
     */
    List<Address> selectAddressByUserId(long userId);

    /**
     * 根据地址id删除
     * @param id
     * @return
     */
    int delAddress(long id);

    /**
     * 通过对象更新用户信息
     * @param user
     * @return
     */
    int updateUserById(User user);

    /**
     * 插入当日访客量
     * @param date
     * @return
     */

   int insertViews(@Param("date")String date);


    int updateViews(@Param("date")String date, @Param("views") Integer views);


    ViewsQO selectViews(@Param("date")String date);

    /**
     * 修改用户地址信息
     * @param address
     * @return
     */
    int updateAddress(Address address);

    Address selectAddressById(long id);
}
